package com.bfxy.collector.web;

import org.jboss.logging.MDC;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.bfxy.collector.util.InputMDC;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@RestController
public class IndexController {

	
	/**
	 * log4j2.xml文件中的日志格式（后续需要根据这个格式解析）：
	 * [%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZ}] ：时间格式，UTC（协调世界时间即美国时间，是北京时间+8h），因为ELK时间是UTC时间
	 * [%level{length=5}] ：日志级别
	 * [%thread-%tid] ：线程id
	 * [%logger] ：打印日志类路径名
	 * [%X{hostName}] ：%X表示自定义日志输出，hostName代表自定义的key，主机名称
	 * [%X{ip}] ：自定义的key，ip
	 * [%X{applicationName}] ：自定义的key，应用名称
	 * [%F,%L,%C,%M] ：%F，类名；%L，执行到到多少行；%C，打印日志类路径名；%M，方法名
	 * [%m] ：实际日志信息
	 * ## ：无意义
	 * '%ex'%n ：%ex'表示异常信息，%n表示换行
	 * -----------------------------------------------
	 * [2019-09-18T14:42:51.451+08:00]
	 * [INFO] 
	 * [main-1] 
	 * [org.springframework.boot.web.embedded.tomcat.TomcatWebServer]
	 * [] 
	 * [] 
	 * [] 
	 * [TomcatWebServer.java,90,org.springframework.boot.web.embedded.tomcat.TomcatWebServer,initialize] 
	 * [Tomcat initialized with port(s): 8001 (http)] ## ''
	 *
	 * 对应logstash的过滤匹配规则配置，符合下述规则则不过滤，否则过滤
	 * ["message", 
	 * "\[%{NOTSPACE:currentDateTime}\] 
	 *  \[%{NOTSPACE:level}\] 
	 *  \[%{NOTSPACE:thread-id}\] 
	 *  \[%{NOTSPACE:class}\] 
	 *  \[%{DATA:hostName}\] 
	 *  \[%{DATA:ip}\] 
	 *  \[%{DATA:applicationName}\]
	 *  \[%{DATA:location}\] 
	 *  \[%{DATA:messageInfo}\] 
	 *  ## (\'\'|%{QUOTEDSTRING:throwable})"]
	 * @return
	 */
	@RequestMapping(value = "/index")
	public String index() {
		InputMDC.putMDC();
		
		log.info("我是一条info日志");
		
		log.warn("我是一条warn日志");

		log.error("我是一条error日志");
		
		return "idx";
	}
	
	
	@RequestMapping(value = "/err")
	public String err() {
		InputMDC.putMDC();
		try {
			int a = 1/0;
		} catch (Exception e) {
			log.error("算术异常", e);
		}
		return "err";
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
}
